#pragma once
 

 
#ifndef LOGIC_H
 
#define LOGIC_H
 

 
#include "storage.h"
 

 
class Logic
 
{
 
private:
 
        Task _userTask;
        Storage _store;
 
        // this will contain the most recent displayed list
        // can be display all
        // can be display with criteria
        // can be searched for list
        vector <Task> _list; 
        // this is for the GUI to display, there will be NO COUT in any function. 
        // all display will be put here, and thrown to the GUI
        vector <string> _forOutputBox;          
 
        void parseUserInput(const string &);
        void executeCommand();
        void addTask();
        void deleteTask();
        void display();
        void modify();
        void reset();
        void search();
        void reminder();
        void undo();
        void help();
        void archive();
        void clearUserTask();

        // for smart search function
        int calculateLevenshteinDistance(const string &, const string &);
public:
        Logic(void);
        ~Logic(void);
 
        vector <string> start(string);
 
};
 

 
#endif 
